﻿using System;
using System.Collections.Generic;
using System.Text;
using AMS.DataAccess.Trademark.BO;
using AMS.DataAccess.Common;
using AMS.DataAccess.BO;
using AMS.DataAccess.Trademark.Filters;
using System.Data;
using AMS.DataAccess.Trademark.BO.Enums;

namespace AMS.DataAccess.Trademark.Interfaces
{
    public interface ITaskManager
    {
        List<TaskInfo> GetTaskList(CallContext context, TaskFilter filter);
        TaskInfo GetTask(CallContext context, int taskId);
        bool BatchAddTasks(CallContext context, List<TaskInfo> tasks);
        List<TaskInfo> GetPagedTaskList(CallContext context, TaskFilter filter, int pageIndex, int pageSize);
        List<TaskInfo> GetPagedTaskList(CallContext context, TaskFilter filter, int pageIndex, int pageSize, out int totalCount);
        List<TaskInfo> GetNewCaseTasks(CallContext context, TaskFilter filter);
        CustomerInfo GetTaskCustomer(CallContext context, int taskId);
        DataTable GetMyTaskSummaryByStatus(CallContext context, bool includeClosedTasks);
        bool UpdateTask(CallContext context, TaskInfo task);
        int BatchChangeTaskStatus(CallContext context, int[] taskIds, TaskStatus targetStatus);
        int BatchChangeTaskStatus(CallContext context, int[] taskIds, TaskStatus targetStatus, TaskStatus[] prevStatusList);
        bool CheckTask(CallContext context, int taskId, string checkMsg);
        int BatchCheckTask(CallContext context, int[] taskIDs, string checkMsg);
        bool CancelCheckTask(CallContext context, int taskId);
    }
}
